// 引入express模块
const express = require('express')
// 引入执行SQL命令方法
const { query } = require('../db')

// 创建路由器对象
const router = express.Router()
// 添加路由
// 新增药品(post /)
// 接口地址： /medicine
router.post('/', async (req, res, next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 判断是否为空
  let code = 400
  for (let k in obj) {
    code++
    if (!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 执行SQL命令
  try {
    var data = await query('insert into hs_medicine set ?', [obj])
  } catch (err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '药品添加成功'
  })
})
// 修改药品(put /)
router.put('/', async (req, res, next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 判断是否为空
  let code = 400
  for(let k in obj) {
    code++
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 执行SQL命令
  try {
    var data = await query('update hs_medicine set ? where id=?',[obj,obj.id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  // 判断是否修改成功
  if(data.changedRows === 0) {
    res.send({
      code: 4100,
      msg: '修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '修改成功'
    })
  }
})
// 删除药品(delete /)
router.delete('/', async (req, res, next) => {
  // 获取get传递的参数
  const { id } = req.query
  console.log(id)
  // 验证是否为空
  if(!id) {
    return res.send({
      code: 401,
      msg: 'id不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('delete from hs_medicine where id=?',[id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '删除成功'
    })
  }
})
// 药品列表(get /)
router.get('/', async (req,res,next) => {
  // 获取get传递的参数
  let {title,pno} = req.query
  // 声明变量，用于拼接后边的条件以及分页
  let str = ''
  // 如果搜索的关键字为空，执行SQL命令的时候，就不需要添加模糊条件
  if(title) {
    str += `where title like "%${title}%"`
  }
  // 如果页码为空，默认页码是1
  if(!pno) {
    pno = 1
  }
  // 每页显示的数量
  let page = 10
  // 计算开始查询的值
  let start = (pno-1) * page
  // console.log(`select * from hs_medicine ${str} order by id desc limit ${start},${page}`)
  // 执行SQL命令: 查询这一页的数据，还需要查询出总的数据量
  try {
    var data = await query(`select * from hs_medicine ${str} order by id desc limit ${start},${page};select count(*) n from hs_medicine ${str}`)
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '药品列表',
    data: data[0],  // 查询到的这一页数据
    total: data[1][0].n,  // 总数据量
    pno   // 当前的页
  })
})

// 暴露路由器
module.exports = router